package com.library.DocuSize.controller;

import com.library.DocuSize.model.DocuSize;
import com.library.DocuSize.model.DocuSizeExample;
import com.library.DocuSize.service.DocuSizeService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
public class DocuSizeController {
    
    private DocuSizeService docuSizeService;

    //通过构造器注入service
    @Autowired
    public DocuSizeController(DocuSizeService docuSizeService) {
        this.docuSizeService = docuSizeService;
    }

    //查询数据
    @GetMapping("/docusize")
    @ResponseBody
    public List<DocuSize> list() {
        //1 构造查询条件
        //1.1 创建查询条件类
        DocuSizeExample example = new DocuSizeExample();
        //1.2 创建条件构造器
        DocuSizeExample.Criteria criteria = example.createCriteria();
        //1.3 通过criteria设置条件
        //...
        
        //2 根据条件查询，如果没有查询条件，传入一个空的example即可
        List<DocuSize> list = docuSizeService.selectByExample(example);
        
        //3 返回结果
        return list;
    }

    //添加数据
    @PostMapping("/docusize")
    @ResponseBody
    public DocuSize add(@RequestBody DocuSize docuSize) {
        //1 准备数据，例如设置docuSize主键等
        //...
        docuSize.setId((int) (System.currentTimeMillis() % 1000000000));
        
        //2 插入数据
        docuSizeService.insertSelective(docuSize);
        
        //3 把新添加的数据返回给调用者
        return docuSize;
    }

    //修改数据
    @PutMapping("/docusize")
    @ResponseBody
    public DocuSize update(@RequestBody DocuSize docuSize) {
        //1 准备数据，例如设置docuSize的修改时间等
        //...
        
        //2 更新数据
        docuSizeService.updateByPrimaryKeySelective(docuSize);
        
        //3 把新修改的数据返回给调用者
        return docuSizeService.selectByPrimaryKey(docuSize.getId());
    }

    //删除数据
    @DeleteMapping("/docusize/{id}")
    @ResponseBody
    public String delete(@PathVariable("id") Integer id) {
        //1 根据主键删除数据
        docuSizeService.deleteByPrimaryKey(id);
        
        //2 返回一个状态码给调用者
        return "200";
    }
}